package com.coderdream.chapter12.decorator.a1;

public class UpDownBorder extends Border {

	private char borderChar; // 裝飾字符

	/**
	 * 以構造函數指定 Display 和裝飾字符
	 * 
	 * @param display
	 */
	protected UpDownBorder(Display display, char ch) {
		super(display);
		this.borderChar = ch;
	}

	/**
	 * 字數同內容的數字
	 */
	@Override
	public int getColumns() {
		return display.getColumns();
	}

	/**
	 * 行數要再加上內容上下的裝飾字符的行數
	 */
	@Override
	public int getRows() {
		return 1 + display.getRows() + 1;
	}

	/**
	 * 指定該行的內容
	 */
	@Override
	public String getRowText(int row) {
		if (row == 0 || row == this.getRows() - 1) {
			return makeLine(borderChar, this.getColumns());
		} else {
			return display.getRowText(row - 1);
		}
		
	}

	/**
	 * 以字符ch，建立重復 count 次的連續字符串
	 * 
	 * @param ch
	 * @param count
	 * @return
	 */
	private String makeLine(char ch, int count) {
		StringBuffer buf = new StringBuffer();

		for (int i = 0; i < count; i++) {
			buf.append(ch);
		}

		return buf.toString();

	}

}
